package com.h6.crm.service;

import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.h6.crm.entity.Contract;
import com.h6.crm.entity.SysUser;
import com.h6.crm.util.pojo.vo.QueryContractVO;
import com.h6.crm.util.pojo.vo.SaveContractByQuoteVO;
import com.h6.crm.util.pojo.vo.SaveContractVO;
import com.h6.crm.util.pojo.vo.UpdateContractStatusVO;

public interface ContractService extends IService<Contract> {

    /**
     * 保存合同
     * 
     *
     */
    Boolean saveContract(SaveContractVO contractVo, SysUser user);

    /**
     * 跟据报价单生成合同
     * 
     *
     */
    Boolean saveContractByQuote(SaveContractByQuoteVO contractVo, SysUser user);

    /**
     * 获取合同列表
     * 
     *
     */
    IPage<Contract> queryContractList(QueryContractVO contractVo);

    /**
     * 获取合同详细
     * 
     *
     */
    Contract getContractDetailById(String contractId);

    /**
     * 查询项目合同记录
     *
     */
    List<Contract> queryContractList(Long projectId);

    /**
     * 修改合同状态
     * 
     *
     */
    Boolean updateContractStatus(String contractId, UpdateContractStatusVO contractStatusVO);

    /**
     * 统计指定时间段的金额
     * 
     *
     */
    Map<String, String> calculateAmountOfperiod(QueryContractVO queryContractVO);

    /**
     * 删除合同
     * 更新项目的总金额
     * 
     *
     */
    Boolean removeByIdAndUpdateProject(String contractId);

}
